|
Inside the System
file
|
The system file contains routines and resources
responsible for running the computer. This section
describes new features and corrections built into the
System file. These items are always present under Mac OS
8.5, even when shift key is held down at system startup.
General
- In Mac OS 8.5 the emulated 68K processor runs in user
mode even when VM is off and all 68k interrupt code runs
in supervisor mode. As a result, all 68k interrupt code
utilizes the interrupt stack pointer instead of the user
stack pointer (the stack used by code running at system
task level). This change reduces the chance of the
application stack overrunning the application's heap zone
during interrupt processing.
- WARNING:
- Developers should not assume the 68K side
of the system is running in Supervisor mode
when Virtual Memory is OFF.
|
Developers who require access to supervisor mode 680x0
instructions can use the _EnterSupervisorMode trap to
switch the processor mode. The assembler code shone in
Listing 1 illustrates the correct way to call the
_EnterSupervisorMode trap and enter supervisor mode.
Here, the result returned by DebuggerGetMax is examined
to determine if selector 8 is available. If it is
available, _EnterSupervisorMode is called.
Listing 1. The correct way to ensure the 680x0
processor is in supervisor mode.
; Is _DebugUtil available?
; Code running on a IIci or later can skip this step.
move.w #_Unimplemented,d0
_GetToolTrapAddress
move.l a0,-(sp)
move.l #$A08D,d0 ; get _DebugUtil
_GetToolTrapAddress
cmpa.l (sp)+,a0 ; was this previously
; unimplemented?
beq.s @noEnterSupervisorMode
; Is the _EnterSupervisorMode selector available?
_DebuggerGetMax ; check how many _DebugUtil
; selectors are implemented
cmpi.l #8,d0 ; is selector 8 available?
blt.s @noEnterSupervisorMode ; EnterSupervisorMode isn't
; available
_EnterSupervisorMode ; switch to supervisor mode
; (switches stacks)
move.w d0,-(sp) ; and save the previous SR contents
; on the stack
bra.s @inSupervisorMode
; If _EnterSupervisorMode wasn't available, then put
; sr on the stack
@noEnterSupervisorMode
move sr,-(sp) ; save the current SR
@inSupervisorMode
; ...
; do stuff in supervisor mode
; remember that the stack has been swapped if we switched
; from user mode to supervisor mode.
; ...
move (sp)+,sr ; restore the SR
- COMPATIBILITY NOTE
- DebuggerGetMax is available on all Mac OS
8.5 supported systems. On other systems,
developers can test for the _DebugUtil trap
before calling DebuggerGetMax.Testing for VM
to determine if the _EnterSupervisorMode trap
should be used is considered a programming
error: developers should use the above method
instead.
|
- Various managers, in particular Font Manager, are
considerably less memory-hungry, both on a per-process
and systemwide basis.
- Several of the Managers are now entirely implemented
in PowerPC code.
- The dialog informing the user that an improper
shutdown occurred has been reformatted. It now includes
an option to run Disk First Aid and will time out after
two minutes.
Related Materials:
- For more info on 68K processor modes, see Technote
1094, Virtual Memory Application Compatibility:
- "User vs Supervisor Mode"
<http://developer.apple.com/technotes/tn/tn1094b.html#Works6>
- "Privileged Instruction Emulation"
<http://developer.apple.com/technotes/tn/tn1094b.html#Works7>
Alias Manager
The Alias Manager is the part of the operating
system that communicates with the file system to maintain
alias records used store information about file and
folder locations. The Alias Manager does not create
Finder alias files; the Finder creates these files and
stores alias records created by the Alias Manager in
them.
- The Alias Manager's search methods have been
broadened to include cases where the simple search for an
existing file on a mounted volume fails yet the absolute
path stored in the alias record resolves to an existing
file. In these cases, the Alias Manager will return a
reference to the file found using the absolute path.
- The Alias Manager has been extended and now provides
the following new routines:
IsAliasFile
OSErr IsAliasFile(const FSSpec *fileFSSpec,
Boolean *aliasFileFlag,
Boolean * folderFlag);
fileFSSpec is a pointer to a file specification record
referring to a file.
aliasFileFlag is a pointer to a Boolean variable set
to true if the file is an alias file created by the
Finder.
folderFlag is a pointer to a Boolean variable set to
true if the alias refers to a folder.
The function IsAliasFile returns true if the file
referred to by the fileFSSpec parameter is an alias file
created by the Finder.
ResolveAliasWithMountFlags
OSErr ResolveAliasWithMountFlags(const FSSpec *fromFile,
AliasHandle alias,
FSSpec *target,
Boolean *wasChanged,
unsigned long mountFlags);
fromFile, if not null, is used to in resolving
relative aliases.
alias is the AliasHandle to resolve.
target contains a pointer to a FSSpec record that will
refer to the file or directory referred to by the alias
when the function completes successfully.
wasChanged referrs to a Boolean variable that will be
set to true if the alias record has been modified by
ResolveAliasWithMountFlags.
mountFlags can be set to kResolveAliasFileNoUI to
prevent any user interaction, including disk switch
alerts, while the alias is being resolved.
The routine ResolveAliasWithMountFlags is identical to
ResolveAlias with the exception that it provides the
mountFlags parameter allowing callers to suppress disk
switch alerts.
ResolveAliasFileWithMountFlags
OSErr ResolveAliasFileWithMountFlags(FSSpec *theSpec,
Boolean resolveAliasChains,
Boolean *targetIsFolder,
Boolean *wasAliased,
unsigned long mountFlags);
theSpec on input refers to a FSSpec record that refers
to an alias file. If the function completes successfully,
it will refer to the file or the directory that was
referred to by the alias file.
resolveAliasChains turns on or off resolution of
chains of alias files (for example, an alias file that
refers to an alias file that finally refers to the target
file).
targetIsFolder points to a Boolean variable that will
be set to true if the target referenced by the alias file
was found to be a folder.
wasAliased returns true if theSpec referred to an
alias file.
mountFlags can be set to kResolveAliasFileNoUI to
prevent any user interaction, including disk switch
alerts, while the alias is being resolved.
The routine ResolveAliasFileWithMountFlags is
identical to ResolveAliasFile with the exception that it
provides the mountFlags parameter allowing callers to
suppress disk switch alerts.
- COMPATIBILITY NOTE
- Before calling IsAliasFile,
ResolveAliasWithMountFlags, or
ResolveAliasFileWithMountFlags, developers
can determine if these routines are available
by testing the Alias Manager gestalt value's
gestaltAliasMgrResolveAliasFileWithMountOptions
bit. Also, see the InterfaceLib section for
important information about linking with the
new InterfaceLib.
|
- The routines NewAliasMinimal or NewAlias could cause
heap corruption if an invalid FSSpec record with the
length of the name field greater than 63 bytes was
provided as a parameter. These routines now return a
paramErr error when they receive an invalid FSSpec
record.
Related Materials:
- The Alias
Manager chapter of Inside Macintosh:
Files.
- The Alias
Manager section on page 2-64 of Inside
Macintosh: QuickTime.
- Technote FL30,
"Resolving Alias Files Quietly"
Appearance Manager 1.1
The Appearance Manager provides user interface
configuration facilities for the appearance of graphical
user interface elements. The Appearance Manager includes
the following new features:
- Switchable visual appearances.
- Data-driven themes.
- Many new brushes and text colors.
- Drawing brushes and primitives for most interface
elements.
- Support for saving and restoring the GrafPort state
regardless of whether the theme draws using a color or
pattern.
- Several different styles of scrollbars and check
boxes.
- Appearance and font change notifications are provided
by way of Apple Events. Each event uses
kAppearanceEventClass as its class and one of the
constants listed in Table 4 as its ID. There are no
parameters to any of the events, and these events are
sent only to those processes that have called
RegisterAppearanceClient to register as an Appearance
Manager client. Table 4 lists the new Apple Events sent
to Appearance Manager clients.
Table 4. Appearance and font change Apple
Events. These events use the Apple Event class
kAppearanceEventClass = 'appr'.
Constant Name
|
OSType
|
Description
|
kAEAppearanceChanged
|
'thme'
|
theme changed (e.g. platinum to hi-tech)
|
kAESystemFontChanged
|
'sysf'
|
system font changed
|
kAESmallSystemFontChanged
|
'ssfn'
|
small system font changed
|
kAEViewsFontChanged
|
'vfnt'
|
views font changed
|
- Animated cursor support.
- Support for sound.
- The new Appearance folder has been added to the
System Folder to support themes. The Appearance folder is
used as a common location to store Appearance related
data files, and it is also the location of the Theme
Files, Sound Sets, and Desktop Pictures folders. Theme
files are autorouted to their appropriate folders when
dropped into the System Folder. Table 5 lists the new
Appearance folders folders present in Mac OS 8.5.
Table 5. New folders for Appearance.
Folder Name
|
OSType
|
Description
|
Appearance
|
'appr'
|
Appearance related materials
|
Theme Files
|
'thme'
|
location for theme files
|
Sound Sets
|
'snds'
|
location for appearance related sound
sets
|
Desktop Pictures
|
'dtp '
|
location for desktop picture files. Files of
type 'JPEG' are auto-routed into this folder
when dropped into the System Folder.
|
The file Folders.h contains the constants listed in
Table 5 along with their symbolic names
(kAppearanceFolderType, kThemesFolderType,
kSoundSetsFolderType, and kDesktopPicturesFolderType) for
use in calls to FindFolder.
Related Materials:
- Appearance Manager SDK
- Mac OS 8 Toolbox Reference
ATSUI (Apple Type Services for
Unicode Imaging)
The Unicode™ Standard is a new character
set encoding that tries to encode all of the the
characters in use in the world today. ATSUI extends the
QuickDraw API and make it possible for Macintosh
applications to draw Unicode text. ATSUI provides both a
low level services for drawing 16-bit Unicode text as
well as much of the high-end typographical control
previously provided by QuickDraw GX.
- Provides text imaging services for 16-bit Unicode
(UTF-16).
- ATSUI fully conforms with The Unicode Standard,
Version 2.1.
- ATSUI fully supports the Unicode bidirectional
algorithm, including the bidirectional ordering
codes.
- ATSUI text-drawing can be integrated within a
QuickDraw-only application (Unlike QuickDraw GX it does
not require developers to adopt a non-QuickDraw API for
all text drawing when its services are being used in an
application).
- For Japanese fonts that lack a Unicode 'cmap', ATSUI
will automatically generate one on-the-fly. The font file
is not modified, but the conversion makes certain
assumptions about character encodings. For best results,
it is recommed that Japanese fonts include a Unicode
'cmap'.
Related Materials:
Code Fragment Manager
The Code Fragment Manager (CFM) is responsible
for the retrieval of executable PowerPC instruction
sequences on PowerPC computers. Almost all of the PowerPC
Mac OS and all PowerPC applications depend on or utilize
the services of the CFM in some way.
- Code Fragment Manager calls to ResolveAliasFile at
system startup would attempt to put up the 'Please Insert
The Disk" alert before any drawing environment was
established. CFM now calls ResolveAliasWithMountFlags to
disable the disk switch alerts so this problem no longer
occurs.
- The Virtual Memory Manager's file mapping code in Mac
OS 8.1 makes large chunks of file mapped memory resident
that are certain or very likely to be used in the near
future. In Mac OS 8.5, that functionality has been moved
into the Code Fragment Manager. Application launch
performance should be approximately the same in most
cases. However, files that have multiple code fragments
(for example, fat CFM 68K/PowerPC applications) may
benefit from this refinement.
- The CFM provides an optional facility where an
application can specify a special folder to be searched
for shared libraries. A field of the 'cfrg' resource
provides the ID of an 'alis' resource. If nonzero that
resource is read from the app file and resolved. The
intent is that this is a relative alias to a subfolder of
the application folder (for example, a repository for
plug-ins). The Code Fragment Manager now calls the new
Alias Manager routine ResolveAliasWithMountFlags to
resolve aliases referenced by the 'cfrg' resource to
prevent any user interaction while libraries are being
loaded.
- The Application Support folder is now part of the CFM
search path.
- CFM defines a new bit in the 'cfrg' resource which
forces the fragment's code into the application heap.
Related Materials:
- Inside Macintosh: Power PC System Software
Control Manager
The Control Manager provides facilities for
drawing and processing user interaction with controls
drawn on the screen. New features for the Control Manager
include:
- The Control Manager is now implemented in PowerPC
code.
- There is a new Edit Text control variant supporting
inline input.
- The Edit Text control now supports locking (disabling
of user input).
- The Static Text control now supports text
truncation.
- The Icon control's icon can now be changed
dynamically.
- Check Boxes and Radio Buttons now support automatic
toggling.
- Proportional scrolling (Set/GetControlViewSize) is
now available.
- Support for 32-bit control values has been
added.
- Facilities for association of tagged data with
controls (properties) have been added.
- Scrolling text box (read-only for now) support has
been added.
- A Control region API has been added.
- A Control validation API has been added.
- Control Manager now validates all ControlHandle
parameters and returns errors if any are invalid.
- Fonts used by controls can now be specified as a
standard system font plus modifications.
- The clock control now returns more part codes.
- Edit text control now supports a validation callback
procedure.
Related Materials:
Device Manager
The Device Manager provides a standard
programming interface for communications between
applications and code that is designed to communicate
with particular hardware devices (although some "device
drivers" do not actually drive devices).
Dialog Manager
The Dialog Manager provides automated user
interface facilities for managing user interactions with
dialog windows. New features for the Dialog Manager
include:
- The Dialog Manager is now implemented in PowerPC
code.
- The Dialog Manager now provides facilities for
specifying dialog timeouts (automatic dismissal after
specified idle time).
- It is now possible for developers to specify the
event mask used inside of ModalDialog.
Related Materials:
Display Manager
The Display Manager provides software services
for managing changes in both the display settings and the
arrangement of monitors attached to Mac OS-compatible
computers.
- With some display cards resolutions that were marked
as non-preset resolutions by the display card were not
showing up in the *recommended* list of resolutions in
the Monitors & Sound Control Panel as they should
have. Here, the Monitors & Sound control panel was
checking the non-preset bit while the Display Manager was
not: the Display Manager would strip the lower timing and
Monitors & Sound would strip the higher (not preset)
timing so neither would appear in the timing list used to
build the *recommended* list. The Display Manager now
correctly observes the non-preset bit and the
*recommended* list is built correctly.
- In some cases an unreadable character was being
appended to the end of some names returned by the Display
Manager. This has been corrected.
- A problem in the Display Manager and Monitors & Sound control panel that could cause a crash when a
multiscan monitor was attached to a PowerBook has been
corrected. This problem would occur opon waking a
PowerBook when the monitor was disconnected during sleep
after the PowerBook was put to sleep with the Monitors
& Sound control panel open.
- A problem on some machines where the display enabler
would not load at startup if a smart display was plugged
into the built-in monitor output has been corrected.
Related Materials:
Disk Initialization
Package
The Disk Initialization Package provides
formatting services for disks.
- DILoad was loading foreign file system resources into
the current heap zone (usually, the current application's
heap) creating a situation that could cause a crash if
the application quit before the resources were unloaded.
These resources are now loaded into the system heap.
- File System Manager-based file systems that support
bad block sparing are now called to spare blocks when a
disk driver verify request fails. This feature was
unavailable in Mac OS 8.0 and Mac OS 8.1.
- The initial value of "Format" popup menu in the disk
initialization dialog now indicates the current format of
the disk.
Related Materials:
Drag Manager
Macintosh Drag and Drop provides standard
communications and user interface services for
applications and other parts of the system allowing users
to perform "drag and drop" commands. New features for the
Drag Manager include:
- Drag hilite now uses theme hilite color.
- A potential crashing problem that could occur with
Translucent drags has been corrected in this version of
the Drag Manager. In previous versions of the Drag
Manager, a pointer to an unlocked relocatable block was
being used in SetDragImage.
Related Materials:
DriverServicesLib
DriverServicesLib provides utility routines for
PowerPC based driver code. The following improvements in
virtual memory support have been added to the Driver
Services library:
- PrepareMemoryForIO now uses LockMemoryForOutput
instead of LockMemory when the IOPreparationOptions are
kIOIsOutput, but not kIOIsInput.
- With Mac OS 8.5, GetPageInformation returns the
kPageIsLockedResident (kPageIsLocked)
PageStateInformation bit correctly. When Virtual Memory
is on, kPageIsLockedResident indicates that a page has
been locked with LockMemory or LockMemoryForOutput.
Before Mac OS 8.5, resident pages with the
kPageIsInMemory (kPageIsResident) PageStateInformation
bit set always had the kPageIsLockedResident bit set as
well - even when they were not locked.
- With Mac OS 8.5, GetPageInformation returns a new
PageStateInformation bit: kPageIsHeldResident. When
Virtual Memory is on, kPageIsHeldResident indicates that
a page is held in physical memory (but not necessarily
locked) with HoldMemory, LockMemory or
LockMemoryForOutput.
Related Materials:
- Designing PCI Cards & Drivers
Event Manager
The Event Manager provides mechanisms for
communications between your software and people utilizing
the computer. Changes in the Event Manager include:
- Parts of the Event Manager are now PowerPC
native.
- Formerly, the event queue was limited to 20 events,
and as a result keystrokes from faster typists were being
lost. The size of the event queue has been increased to
48 elements.
Related Materials:
- "Event Manager" chapter of Inside Macintosh:
Toolbox Essentials.
File System Manager
The File System Manager manages the use of
foreign file systems. The File System Manager provides a
general means by which foreign file systems can be
installed, identified, and interfaced to the Operating
System.
- XGetVolInfo requests (like GetVolInfo requests) to a
FSM based file system are now passed a working directory
number or the default volume number (the value zero) in
ioVRefNum if the File Manager caller used a working
directory number or the default volume number. Under Mac
OS 8.1, ioVRefNum would always contain the real volume
reference number when passed to a FSM based file system.
This change lets the FSM based file system determine what
to return in ioVNmFls correctly. (See also, the File
Manager section).
- UTTrashBlocks now correctly returns an OSErr result
(either noErr, rfNumErr, or fnOpnErr). Before Mac OS 8.5,
UTTrashBlocks returned the file reference number passed
in as the fileRefNum parameter.
- The File Manager's Disk Cache now range checks the
buffer parameter passed to UTReleaseBlock and
UTMarkDirty. If the buffer parameter is bad, those calls
will no longer crash the system.
File Manager
The File Manager provides services for storage
and retrieval of disk based information. New features for
the File Manager include:
- PBXGetVolinfo was returning a an incorrect value in
ioVNmFls when ioVRefNum contained either a working
directory id or zero (the default directory) when the
call referred to a FSM based file system volume. As
described in the File System Manager section, this has
been corrected so the File Manager now passes the working
directory id or zero through to FSM based file systems
rather than converting the value to a real volume
reference number first.
- Under some circumstances the Hard Disk on some
PowerBook models would not spin down when it was
instructed to do so by the control strip module. This has
been corrected.
- UnmountVol would sometimes return -47 (File busy)
errors when called for some server mounted volumes. Here,
the File Manager was leaving some working directories
open. This has been corrected.
- The pleaseCacheBit (bit 4) in the ioPosMode field is
now supported by the disk cache. Read/Write requests to
HFS/HFS+ volumes can now set the pleaseCacheBit in
ioPosMode to request caching for larger blocks of data.
File System Manager clients can also set this bit in the
cacheOptions parameter to UTCacheReadIP, UTCacheWriteIP,
UTVolCacheReadIP, and UTVolCacheWriteIP requests. Setting
this bit does not guarantee a request will be cached;
however, it does increase the probability of a request
being cached.
- PBGetFPos now clears all 16 bits of ioPosMode.
- The routines PBAllocate and PBAllocContig have been
modified so they set the value of ioActCount before they
return even if an error occurs during their
execution.
- The minimum size for the disk cache is now 128K.
- Colons are now allowed in filenames when using the
Unicode-based APIs. Previously, the colons occuring in
file names were returned as-is, making such files
unreachable using the Pascal string based APIs. Colons
are now converted to question marks (as are other
non-representable characters) and the FileID is inserted
in the name.
- Calls to PBCatMove on HFS Plus formatted volumes were
creating oversized catalog file thread records leaking
space in the catalog file. This has been corrected so
PBCatMove no longer leaks space in the catalog file.
- A problem where PBGetCatSearchSync could return
inconsistent results when searching HFS+ volumes has been
corrected.
- When the HFS+ code was saving the Volume Header
information it was sign extending the attributes field
causing the upper bits to be set when the software lock
bit (bit 15) was set. This sign extension no longer
occurs.
- PBCatSearch has been modified so it does not return
catChangedErr as often as it did in previous system
releases.
- Placing a file ID in the directory ID field of a
CInfoPBRec and calling PBGetCatInfo now correctly returns
dirNFErr. Under Mac OS 8.1, this would incorrectly
produce information about a file as if it were a
directory. Before 8.1, it would return fnfErr.
- Added a new call, PBHTrashVolumeCaches, which will
flush a volume and invalidate that volume's caches in the
File Manager and Disk Cache. Bit 2 of the vMAttrib field
returned by GetVolParams is set if a volume supports this
call.
- Mac OS Extended volumes store all dates in UTC. In
Mac OS 8.1, those dates were converted to/from local time
using the current time zone and daylight savings time
settings, which would cause the dates to appear to change
by one hour when switching to/from daylight savings time.
In Mac OS 8.5, the dates are converted using the daylight
savings time setting that would have been in effect as of
the date being converted.
- In Mac OS 8.1, when a Mac OS Standard or Mac OS
Extended volume was extremely fragmented and an operation
required the extents B-tree to grow beyond its maximum
number of extents, the File Manager would return error
-127 and leave extra bits set in the volume bitmap (Disk
First Aid would report this as a minor problem in the
volume's allocation bitmap). The File Manager has been
corrected so that under these circumstances it will
return a dskFulErr and it will not leave extra bits set
in the volume bitmap.
- A problem where a crash could occur when saving a log
in MacsBug has been corrected. Here, the File Manager was
attempting to jump to location zero.
- The File Manager was not properly invalidating some
caches when a volume was unmounted. The most common
symptoms were missing items in Finder windows when
mounting/unmounting a series of floppies or disk images
(such as installing software from floppies), or a disk
switch dialog appearing asking for a disk with a garbage
or blank name. The File Manager now correctly invalidates
a volume's caches when it is unmounted.
- A problem that could occur when mounting a CD-ROM has
been corrected. In these cases, mounting a CD-ROM would
sometimes lead to a dialog stating the volume needed to
be repaired and under certain conditions after a crash
this could cause corruption of writable volumes when they
were mounted.
- A PBAllocContig call requesting more space than was
available contiguously would return the correct error but
still allocate a smaller amount of space. PBAllocContig
has been changed so that under these conditions it no
longer allocates any space.
- The File Manager no longer writes to the first sector
of a resource fork every time it is closed. Formerly, the
first sector of a resource fork contained a copy of the
112 byte MFS directory entry intended for use by the
Finder and disk repair utilities in older versions of Mac
OS. No current disk repair utilities rely on this
information nor does the Finder. Removal of this extra
read/write cycle speeds up Finder copies for files
containing resource forks.
- A problem that could occur when booting from a Mac OS
Standard volume has been corrected. Here, if aliases to
shared library files located on a Mac OS Extended volume
were present in the Extensions folder, then these aliases
would be modified in such a way that they would fail to
resolve every time the system was rebooted. In Mac OS
8.5, such aliases resolve correctly.
- A problem where PBDelete could return -127 and
corrupt the volume bitmap when trying to delete a file on
a Mac OS Extended volume has been corrected. This problem
would occur when a filename was originally converted to
Unicode using the wrong text encoding (such as an
application creating a file using a Japanese filename
without the language kit installed, but later attempting
to delete the file with the language kit installed).
- WARNING:
- Copying files near the 2 Gigabyte HFS
file size limit to HFS format volumes will
fail when the destination file's physical
size goes beyond the 2GB size limit due to
larger allocation block sizes being used on
the destination volume.
|
Related Materials:
- The File
Manager chapter of Inside Macintosh:
Files.
- Technote FL16,
"File Manager Performance and Caching"
Folder Manager
The Folder Manager provides facilities for
locating "special" folders (such as, for example, the
Extensions folder) in the System Folder without relying
on the names of those folders. This aids developers in
application localization.
Font Manager
The Font Manager provides system wide services
for the retrieval of symbols and glyphs for display of
textual information.
- A problem where an italic bitmap font would
incorrectly override a TrueType font of the same size
displaying letters with the wrong style has been
corrected. Now, the TrueType font will be displayed
unless the style of the bitmap font matches exactly.
- Font Manager no longer allocates or de-allocates
caches on a per processes basis. A system wide font cache
is allocated at system startup in the system heap. All
processes share this same cache.
- The Font Manager does more parameter checking than in
previous versions.
- Font Manager now purges fonts from the font cache
more aggressively.
- All fonts shipping with Mac OS 8.5 (except VT102)
include the new euro glyph.
- The US version of Mac OS 8.5 ships with the following
new fonts: Capitals, Gadget, Sand, Techno, and Textile.
Related Materials:
- The Font
Manager chapter of Inside Macintosh:
Text.
- TN11xx: The Euro Currency Symbol
Help Manager
The Help Manager is responsible for the drawing
and display of Help Balloons and the Help menu.
- The Help Viewer application can now be accessed
directly from the Help Menu.
Related Materials:
Icon Services
New for Mac OS 8.5, Icon Services provides fast
and efficient facilities for retrieval of appropriate
icon information used to represent files, directories, or
other commonly used icons (such as, for example, the
caution alert icon, the note alert icon, the help icon,
et cetera).
- Both Icon Services and Icon Utilities are now
implemented in PowerPC code.
- Icon Services is Appearance Manager aware, and will
always return information consistent with the active
theme.
- To avoid duplication of data and for better
performance, Icon Services utilizes a system wide icon
cache shared by all applications. Icon data returned is
common to all applications, so it is possible for two
different applications to obtain an icon reference that
refers to the same icon data.
- A reference count is maintained for icons loaded into
the cache, and icons can only be removed from the cache
if the reference count is zero.
- The new 'icns' resource contains data for 4 icon
sizes (mini, small, large, huge) at 4 color depths
(1-bit, 4-bit, 8-bit and 32-bit) and two kind of masks
(1-bit masks and 8-bit masks).
- 'icns' resources can contain deep masks (8 bit masks)
allowing for the specification of transparent drawing
effects. Each pixel in a deep mask indicates the level of
transparancy desired for drawing a particular pixel.
Transparency levels range from 0 (transparent) through
255 (opaque).
- In the previous version of Icon Services, Icon
Utilities, only 34 arbitrary colors would highlight
properly (they were known as the Apple icon colors). This
limitation has been removed.
- Drivers can now provide color icons by implementing
the kdgMediaIconSuite driver gestalt selector as
described in the Device Manager
section.
Related Materials:
InterfaceLib
InterfaceLib provides a Code Fragment Manager
interface to many of the Mac OS toolbox routines on
PowerPC based computers. The following additions and
changes are present in this most recent version of the
InterfaceLib.
- The low memory accessor LMGetABusVars has been
obsoleted and should not be used as it behaves
differently on 68K and PowerPC. The new accessor
LMGetABusGlobals that retrieves the long at 0x02D8 should
be used in its place. LMGetABusVars will continue to
return the value 0x02D8. The following new accessors were
added: LMGetABusGlobals, LMSetABusGlobals, LMGetABusDCE,
LMSetABusDCE.
- The following low memory accessors have been added.
They are useful for determining how long it has been
since any user activity has occurred:
- LMGetKeyTime -- the value returned by TickCount
when the last keystroke was received.
- LMGetMBTicks -- the value returned by TickCount
when the mouse button was last pressed.
Formerly, these values could be accessed using the
routines shown in listing 2.
Listing 2. low memory accessors for KeyTome and
MBTicks.
long LMGetMBTicks (void) {
return (*(long *)0x016E);
}
long LMGetKeyTime (void) {
return (*(long *)0x0186);
}
Also, routines for setting these values have also been
added: LMSetKeyTime, LMSetMBTicks.
- AddDrive
There was a problem in the parameter handling of the
PowerPC AddDrive glue code in InterfaceLib that would
mangle the drive number before called through to the 68k
code. This problem has been corrected.
- New Alias Manager routines
IsAliasFile, ResolveAliasWithMountFlags, and
ResolveAliasFileWithMountFlags are now included in
InterfaceLib.
- New routines added to InterfaceLib that were
previously only available from 68k code:
DriverInstall, DriverInstallReserveMem, DIXFormat,
DIXZero, DIReformat, PBUnmountVolImmed,
ReallocateHandleSys, LockMemoryForOutput,
MakeMemoryResident, ReleaseMemoryData,
MakeMemoryNonResident, FlushMemory,
InstallExtensionNotificationProc,
RemoveExtensionNotificationProc,
InstallExtensionTableHandlerProc,
RemoveExtensionTableHandlerProc, FlushCodeCacheRange,
NewCServiceWindow, UCTextServiceEvent,
ataManager
- The rest of the PurgeSpace calls that were previously
only available from 68k code have been added to
InterfaceLib:
PurgeSpaceTotal, PurgeSpaceContiguous,
PurgeSpaceSysTotal, PurgeSpaceSysContiguous
- All the File System Manager calls have been added to
InterfaceLib:
UTAllocateFCB, UTReleaseFCB, UTLocateFCB,
UTLocateNextFCB, UTIndexFCB, UTResolveFCB, UTAllocateVCB,
UTAddNewVCB, UTDisposeVCB, UTLocateVCBByRefNum,
UTLocateVCBByName, UTLocateNextVCB, UTAllocateWDCB,
UTReleaseWDCB, UTResolveWDCB, UTFindDrive, UTAdjustEOF,
UTSetDefaultVol, UTGetDefaultVol, UTEjectVol,
UTCheckWDRefNum, UTCheckFileRefNum, UTCheckVolRefNum,
UTCheckPermission, UTCheckVolOffline,
UTCheckVolModifiable, UTCheckFileModifiable,
UTCheckDirBusy, UTParsePathname, UTGetPathComponentName,
UTDetermineVol, UTGetBlock, UTReleaseBlock, UTFlushCache,
UTMarkDirty, UTTrashVolBlocks, UTTrashFileBlocks,
UTTrashBlocks, UTCacheReadIP, UTCacheWriteIP,
UTBlockInFQHashP, UTVolCacheReadIP, UTVolCacheWriteIP,
InstallFS, RemoveFS, SetFSInfo, GetFSInfo, InformFSM,
InformFFS
- The following DriverServicesLib calls have been added
to InterfaceLib:
BlockZero, BlockZeroUncached, IncrementAtomic,
DecrementAtomic, AddAtomic, BitAndAtomic, BitOrAtomic,
BitXorAtomic, CompareAndSwap, IncrementAtomic8,
DecrementAtomic8, AddAtomic8, BitAndAtomic8,
BitOrAtomic8, BitXorAtomic8, IncrementAtomic16,
DecrementAtomic16, AddAtomic16, BitAndAtomic16,
BitOrAtomic16, BitXorAtomic16, TestAndSet,
TestAndClear
- COMPATIBILITY NOTE
- Developers linking against newer versions
of InterfaceLib who would like to have their
products run with previous versions of the
system software should weak link with that
library otherwise the Code Fragment Manager
will not allow your application to launch
with earlier versions of InterfaceLib.
Developers weak linking against the new
InterfaceLib who call any of the routines
listed in this section should check to ensure
that the routine is defined before calling
it.
|
List Manager
The List Manager is the part of the operating
system providing standard user interface facilities for
drawing and managing user interaction with lists of
items.
- The List Manager is now implemented in PowerPC
code.
- Support for live scrollbar indicator dragging has
been added.
- The proportional scrollbar indicator is now
supported.
- When deleting or add cells to a list while drawing is
turned off (by calls to LSetDrawingMode or LDoDraw), in
certain cases it was possible for the ListHandle's bounds
to become slightly scrambled and draw incorrectly when
drawing was turned back on. This problem has been present
in the List Manager since its introduction, and it has
been corrected in Mac OS 8.5.
- List click loops can now be written in PowerPC native
code using the Mixed Mode glue available in Lists.h.
- WARNING:
- Writing list click loops in PowerPC
native code is not backward-compatible with
system releases prior to Mac OS 8.5. For
compatibility with all systems prior to Mac
OS 8.5, you must still write click loops
using 68k assembly or a 68k assembly
stub.
|
Related Materials:
- The List
Manager chapter of Inside Macintosh: More
Macintosh Toolbox.
MathLib
MathLib provides software implementation of
floating point support routines for PowerPC computers.
All PowerPC processors contain built-in floating point
processing capabilities. The routines provided in MathLib
supplement those facilities.
- MathLib is now present in the System file's data fork
and as such it is eligible for paging.
Related Materials:
- Inside Macintosh: PowerPC Numerics.
Memory Manager
The Memory Manager is the part of the operating
system responsible for managing memory allocation
requests.
- A problem where under some circumstances the RAM Disk
could not be turned off has been corrected.
- The Memory Manager is now present in the system
file's data fork and as such it is eligible for paging.
Related Materials:
Menu Manager
The Menu Manager is the part of the operating
system responsible for both drawing the menu bar and
drawing menus and pop-up menus on the screen while the
mouse is being held down.
- Most of the Menu Manager is now implemented in
PowerPC code.
- Support for association of tagged data with menus
& menu items (properties) has been added.
- Menu contents for menus that use the system MDEF are
now cached even when is VM on.
- It is now possible to remove the current
application's name from the Application Menu.
- Support for disabling icons appearing in menus has
been added.
- The Menu Bar is now drawn in condensed style text and
long menu titles are truncated if the screen is too
narrow to display the entire menu bar contents.
- Support for excluding the menu mark column has been
added.
- Support for more than 255 submenus has been added.
SetMenuItemHierarchialID can be used to set the full
range of menu IDs (-32767 to 32767).
- Support for enabling and disabling menu items at
indexes greater than 31 has been added.
- Sorting in AppendResMenu was not working as expected
in non-English languages. Here, RelString was being
called instead of CompareString. AppendResMenu now uses
CompareString so sorting now works as expected with
non-English languages.
- Support for showing and hiding the menu bar has been
added.
- New append/insert APIs without meta-character
interpretation have been added.
- The system MDEF now supports all keyboard modifiers
and glyphs.
- Support for setting the font used to draw a menu has
been added. Developers should use this new API rather
than setting the low memory globals SysFontFam and
SysFontSize.
- COMPATIBILITY NOTE
- The Menu Manager does not attempt to
modify the behavior of third-party MDEFs for
correct colorization in Mac OS 8.5.
Application vendors including custom MDEFs
with their products must revise their
products to support Appearance.
|
- COMPATIBILITY NOTE
- The Menu Manager does not modify the
behavior of the Event Manager to force
Button() to return true while tracking sticky
menus. MDEF authors who depend on Button()
returning false values must modify their
products.
|
Related Materials:
Navigation Services
1.1
Navigation services provides new open and save
panels allowing users to locate and select files and
other resources.
- COMPATIBILITY NOTE
- Standard File's functionality is also
provided by Navigation Services. Developers
interested in future Mac OS compatibility are
encouraged to replace their calls to Standard
File with calls to Navigation Services.
|
Related Materials:
Notification Manager
The Notification Manager provides a mechanism
for interrupt level tasks to prompt system task level
operations such as displaying an alert containing a
message.
- The Notification Manager was calling GetResource when
the interrupt level mask was set to 7 (even though it
wasn't executing at interrupt level). This has been
corrected.
Related Materials:
- The Notification Manager chapter in Inside
Macintosh:Processes.
Process Manager
The Process Manager shares the processor among
multiple applications. Mac OS 8 includes the following
new features in the Process Manager:
- Under some circumstances the cursor would not change
to the cross hairs as expected for small area screen
captures. This has been corrected.
- LaunchApplication now honors alias files.
- Process Manager is slightly more strict about when it
will call jGNEFilter for "fake" keyDown events created by
the Text Services Manager, eliminating some duplicate
events.
- During application switches, the Process Manager now
checks if a mouse down was pending in the event queue for
the foreground application or any floating windows in the
Text Services Manager layer. This correction eliminates
the possibility of a mouse click in one of the foreground
application's windows sneaking through to the application
being switched in.
- The Process Manager will no longer launch invisible
'appe' files.
Related Materials:
- The Process
Manager chapter of Inside Macintosh:
Processes.
- Technote TN1070,
"Background-Only Applications"
- Technote PS510,
"Process Manager Q&As"
PC Card Manager
The PC Card Manager handles software issues
related to PC cards.
- If a PC Card was ejected during sleep (using the pin
hole method) and replaced with a different card, then the
new card would not be recognized after sleep and the old
card icon would remain on the desktop. The PC Card
Manager now registers the new card correctly when a card
is replaced in this way.
- The PC Card Manager has been changed to accommodated
PC cards that do not contain a CIS (Card Information
Structure - information normally stored on a card which
tells what kind of card it is). Prior to this change,
such a card would simply be ejected. Now, the PC Card
Manager uses other data, such as the PCI configuration
registers, to establish information about such cards.
Related Materials:
QuickDraw
QuickDraw is the part of the MacOS used for
drawing and displaying graphical information on the
screen and other raster devices. The QuickDraw provided
with Mac OS 8.5 is a new native PowerPC implementation of
QuickDraw. It is expected that drawing and scrolling
performance should improve over previous versions of
QuickDraw.
- Most of QuickDraw is now PowerPC native with the
exception of the Palette Manager and the Picture
Utilities.
- QuickDraw pictures containing invalid 0x9A (direct 24
bit images) opcodes recorded on 68k machines would not
play back correctly on PowerPC machines. This has been
corrected.
- A problem where the 16-bit encoding routines for
QuickDraw pictures would sometimes produce invalid data
has been corrected.
- A problem where larger font sizes would not draw has
been corrected. Fonts are now drawn at their largest
possible size if a size larger than the maximum font
display size is requested.
- The Roman Script Utilities (DrawJustified,
CharToPixel, etc.) have been moved into QuickDraw
Text.
- 'sbit' support, currently available only via a
WorldScript II patch, has been rolled into the standard
system. This allows systems using two-byte characters to
be booted with extensions turned off.
- All CopyDeepMask transfer modes now work
correctly.
- QuickDraw now performs extensive parameter checking.
For parameter errors, QDError will return the paramErr
result code.
- QDError now returns more meaningful results.
- A problem where passing bkPixPat to FillCRgn would
corrupt the current graphics port has been corrected. It
is now possible to provide the current background pixpat
as a parameter to the FillCRect routine.
- WARNING:
- Calling
FillCRect(&qd.thePort->portRect,
((CGrafPtr) qd.thePort)->bkPixPat); in any
version of color QuickDraw prior Mac OS 8.5
will destroy the current bkPixPat in the
GrafPort.
|
- When recording pictures, QuickDraw would read frame
buffers for raster images one byte at a time which
produced some incompatibility problems when reading frame
buffer data from some non-apple devices. For greater
compatibility, frame buffers are now read in pixel size
chunks that are buffered internally before being passed
to the RLE encoding routines.
- Nearly all of QuickDraw is now present in the system
file's data fork and as such it is eligible for paging.
The cursor library is not eligible for paging and it
remains in memory at all times.
Related Materials:
- Inside Macintosh: Imaging with
QuickDraw.
QuickDraw Text
QuickDraw Text is the part of the MacOS used for
drawing and displaying textual information on the screen
and other raster devices.
- A new Gestalt selector, gestaltQDTextVersion =
'qdtx', has been defined in this release of QuickDraw
Text. With this release of QuickDraw Text, the value
returned is gestaltAllegroQDText.
- COMPATIBILITY NOTE
- The new QuickDraw Text routines described
in this section are available only if the
result returned by a call to Gestalt with the
selector gestaltQDTextVersion is greater than
or equal to the constant
gestaltAllegroQDText.
|
- Support for anti-aliased text has been added to
QuickDraw Text. Anti-aliased text drawing will occur if
anti-aliased text drawing is turned on, the destination
device pixel depth is greater than or equal to 8 bits,
there is sufficient memory available, the requested font
size for drawing is larger than the minimum size for
anti-aliased drawing, and the font being drawn is an
outline font. Two new routines for accessing the state of
anti-aliased text drawing can be called from PowerPC
applications linking against the shared library named
"FontManager" that is included in the system file. The
routines are defined as follows:
IsAntiAliasedTextEnabled
Boolean IsAntiAliasedTextEnabled(SInt16* outMinFontSize);
outMinFontSize is an optional parameter and may be set
to NULL. If outMinFontSize is not NULL, then the sixteen
bit integer at that address will be set to the current
lower size limit for antialiasing text (as set in the
Appearance Control Panel).
The function IsAntiAliasedTextEnabled returns true if
anti-aliased text display is enabled.
SetAntiAliasedTextEnabled
OSStatus SetAntiAliasedTextEnabled(Boolean inEnable,
SInt16 inMinFontSize);
inEnable indicates the desired state of the
anti-aliased text drawing. If inEnable is true, then both
anti-aliased text drawing will be turned on and the
QuickDraw Text global variable outlinePreferred will be
turned on.
inMinFontSize defines the smallest size font that
should be drawn as anti-aliased text. This value must be
in the range 1 through 128. If the inMinFontSize
parameter is outside of the this range, then the default
value 12 is used.
SetAntiAliasedTextEnabled always returns noErr.
NOTE: For fonts which have both bitmaps (NFNTs) and
outlines (sfnts), the implicit change in outlinePreferred
may change the metrics for the bitmap font sizes.
- WARNING:
- Calls to SetAntiAliasedTextEnabled should
only be made under special circumstances when
greater control over text display during
particular operations is desired. Developers
changing the state of anti-aliased text
drawing must restore its original state
before returning control to the system.
Failure to do so may result in other parts of
the system, most notably, the Appearance
control panel, becoming out of sync with the
actual state of anti-aliased text
drawing.
|
- Two new routines for retrieving the pixel dimensions
of text that will be drawn on the screen have been added
to QuickDraw Text. These routines can be called from
PowerPC applications linking against the shared library
named "FontManager" located in the system file. The new
routines are defined as follows:
QDTextBounds
void QDTextBounds(short byteCount,
const void* textAddr,
Rect* bounds);
byteCount is the number of bytes of text contained in
the buffer located at the address contained in the value
textAddr.
textAddr points to byteCount bytes of textual
data.
bounds is a pointer to a Rect structure whose
coordinates will be calculated by QDTextBounds. On
return, bounds will contain the bounding coordinates for
the entire image (including parts of the image that may
extend beyond the first and last pen positions after the
text has been drawn) that will be drawn for the text
(given the font settings in the current GrafPort). Note
that the coordinates returned are relative to the current
pen position (as if the pen were located at the origin).
For example, in Listing 3 we use QDTextBounds to draw a
rectangle around the text 's image. Notice how in this
example the bounds returned by QDTextBounds are offset
using the current pen position so that the text drawing
and the rectangle drawing occur using the same coordinate
system.
Listing 3. Using QDTextBounds to discover where
text will be drawn.
Rect bounds;
char *text = "sample text";
Point where;
SetPt(&where, 100, 100);
MoveTo(where.h, where.v);
PenSize(1,1);
QDTextBounds(text, strlen(text), &bounds);
OffsetRect(&bounds, where.h, where.v);
InsetRect(&bounds, -1, -1);
FrameRect(&bounds);
DrawText(text, 0, strlen(text));
The left most edge of the text's image can be either
to the right or the left of the pen postition, and the
right most edge of the text's image may be to the left or
the right of the final pen position.
FetchFontInfo
OSErr FetchFontInfo(SInt16 fontID,
SInt16 fontSize,
SInt16 fontStyle,
FontInfo* info);
fontID is the font ID number for a font.
fontSize is the font size in pixels.
fontStyle contains the font style flags for the
font.
info is a pointer to a font information record where
the result will be stored.
FetchFontInfo returns the same information as
GetFontInfo except rather than gathering information
about the font settings from the current GrafPort this
information is provided as parameters to the routine. If
FetchFontInfo returns an error, the fields in the
FontInfo record will be set to zero (the error code
returned is the value returned by FMSwapFont).
Related Materials:
- The "QuickDraw Text" chapter of Inside
Macintosh: Text.
Script Manager
The Script Manager provides functions for
controlling, modifying, and accessing the features of
both roman and non-roman script systems.
- Simple Scripts (Scripts not requiring the Worldscript
extension) were not being loaded when the system was
booted with extensions turned off. This has been changed
so now simple scripts are loaded when extensions are
turned off.
- The keyboard menu bar icon was being drawn twice
whenever a new keyboard layout was being selected.
- WorldScript Power Adapter is not loaded if it is
installed by a language kit or other installer, since Mac
OS 8.5 has this functionality built in to the System
file. WorldScript II is no longer loaded differently than
other extensions.
- Support for Unicode scripts and Unicode keyboard
layouts has been added.
- Font and Keyboard Synchronization can now be turned
off. This can be done either in the Keyboard control
panel or by setting the smfDisableKeyScriptSync flag in
the smGenFlags script manager variable. Calls to
KeyScript check this flag to determine if the current
keyboard script should be synchronized with the current
script. To force keyboard script synchronization for
individual calls to KeyScript while keyboard script
synchronization is turned off, developers can set bit 7
(smKeyForceKeyScriptBit) in the code argument passed to
KeyScript. Calls to KeyScript will not synchronize the
current Keyboard Script if the smfDisableKeyScriptSync
flag in the script manager variable smGenFlags is set,
unless the smKeyForceKeyScriptBit bit is set in the
KeyScript call's code parameter.
Related Materials:
- The Script
Manager chapter of Inside Macintosh:
Text.
- Optional Font and Keyboard Script Synchronization
Technote.
Serial Driver
The Serial Driver provides serial communications
services for either the printer port or the modem port
using the Device Manager API. The Mac OS 8.5 Serial
Driver includes the following changes:
- A problem where some machines would not reboot
without the Serial (Built-in) extension in the extensions
folder has been corrected.
Related Materials:
- The Serial
Driver chapter of Inside Macintosh:
Devices.
- Technote TN1018,
"Understanding the SerialDMA Driver"
- DTS Q&A DV30
http://developer.apple.com/qa/dv/dv30.html
Sound Manager
The Sound Manager provides facilities for
playback and recording of digitized sounds.
- The siActiveChannels SPBSetDeviceInfo call was not
being accepted on 6100, 7100, or 8100 PowerMacs. This has
been corrected.
- It is now possible to change recording quality while
recording.
- Chained calls to SPBRecord now work when the
recording buffer size is smaller than the hardware
interrupt buffer size.
- Sound input source settings made in Monitors & Sound are now remembered across boots on 6100, 7100, and
8100 machines.
- siRecordingQuality now works as expected.
- The Power Mac 4400/200 always reported that the
microphone is not connected (even if it was). This
problem has been corrected.
Related Materials:
Standard File
Standard File provides a consistent user
interface for accessing files by way of the Open and Save
As dialog boxes.
- The number of file types that can be specified for
Standard File's SFGetFile,SFPGetFile, StandardGetFile,
and CustomGetFile routines has been increased from 32
types to 256 types.
- A problem where the arrow navigation keys were not
working as expected on some PowerBook models has been
corrected.
- Aliases to special folders (for example, the Fonts
folder) no longer show up in Standard File as
applications.
- COMPATIBILITY NOTE
- Standard File's functionality is also
provided by Navigation Services. Developers
interested in future Mac OS compatibility are
encouraged to replace their calls to Standard
File with calls to Navigation Services.
|
Related Materials:
- The Standard File Package chapter of Inside
Macintosh: Files.
- Navigation Services SDK
Text Services Manager
1.5
The Text Services Manager provides facilities
for applications to communicate with various text
processing utilities that provide services such as
special text input methods, spell checking, hyphenation,
et cetera.
- The Text Services Manager has been extended to
support optional font and keyboard synchronization. If
the smfDisableKeyScriptSync flag is set in the smGenFlags
Script Manager variable, then calls to
ActivateTSMDocument will not synchronize the current
Keyboard Script with the internal keyboard script state
of the Text Services Manager Document. The
ActivateTSMDocument call is the only Text Services
Manager call that calls through to KeyScript. For more
information about optional font and keyboard
synchronization, see the Script
Manager section.
- TSM now installs fewer trap patches.
- Keyboards and input methods can now generate Unicode
directly (for compatibility with existing applications,
Unicode generated by input devices is automatically
converted into a standard Mac encoding).
- By supporting TSM and creating Unicode TSMDocuments,
Applications can receive Unicode input directly.
Related Materials:
- The "Text Services Manager" chapter of Inside
Macintosh: Text.
Translation Manager
The Translation Manager provides file and scrap
translation to allow data to be used by applications
other than those used to originally create the data. The
following changes have been made in the Translation
Manager:
- The Translation Manager implementation has been moved
to the System fileand the user interface has been moved
from the, now obsolete, Mac OS Easy Open control panel to
the File Exchange control panel's "File Translation"
panel.
- The Translation manager is now implemented in PowerPC
code.
- The available translator lists are now rebuild
dynamically. If you register a Translation Extension
component after startup, the Translation Manager will
recognize it immediately.
- Contents of the "Translated Documents" folder are now
removed at system startup time (the Translation Manager
places automatically translated documents into this
folder before passing them on to applications).
- With both QuickTime and MacLinkPlus for Easy Open
installed, there are more than 64 possible translation
configurations for Desktop Translators, but Desktop
Translators could only be configured to use one of the
first 64 translations available. This limitation for
Desktop Translators has been removed.
- Applications which open files of a given type may do
so without translation. Prior to File Exchange 3.0, if an
application claimed (through its bundle and/or 'open'
resource) that it could open files of a given type,
documents of that type with a different creator type than
the application's creator type would be translated rather
than opened directly. Now, such documents are opened
directly without translation. To see an example of this
behavior, under Mac OS 8.1 drop a MoviePlayer movie onto
SimpleText. It will open as a picture rather than a movie
(as it will be translated by the QuickTime translator
first). Now, the movie will open as expected.
- Translation Manager no longer creates a temporary
heap zone for Translation Extension components. Instead,
Translation Extension components are loaded into the
System Heap (the System Code Fragment Manager context in
the case of PowerPC-native Translation Extension
components). This means that Translation Extensions are
no longer allowed to "leak" memory, as their calls to
NewPtr and NewHandle now operate in the System heap.
- The Translation Manager now disposes of the
translation advertisement when tearing down the
translation progress dialog contrary to what is stated in
"Inside Macintosh: More Macintosh Toolbox" (since the
translation advertisement is now allocated in the System
heap rather than a temporary heap).
- COMPATIBILITY NOTE
- Developers of PowerPC Translation
Extensions are advised to package them as
specified in Tech Note 1004 rather than as is
done in the Mac OS Easy Open SDK.
|
Related Materials:
- The Translation Manager chapter of Inside
Macintosh: More Macintosh Toolbox.
- Mac OS Easy Open SDK
- Tech Note 1004
Virtual Memory Manager
The Virtual Memory manager provides virtual
memory services for the Mac OS. The following changes
have been made in the Virtual Memory Manager:
- All code needed to run VM on 68040 processors has
been removed.
- GetPageState now correctly returns the state of pages
in file mapped space. Before Mac OS 8.5, GetPageState
returned kPageOnDisk for unmapped pages. With Mac OS 8.5,
GetPageState returns kNotPaged for unmapped pages (as it
does for all other memory not controlled by the Virtual
Memory).
- DeferUserFn returned a garbage result if the user
function was called immediately. It now returns noErr.
Related Materials:
Window Manager
The Window Manager is part of the Mac OS
providing facilities for drawing and maintaining windows
on the screen.
- The Window Manager is now implemented in PowerPC
code.
- An extensible, collection-based window resource
format ('wind') has been added.
- Floating window support has been added with the
routines CreateNewWindow, GetWindowClass,
ShowFloatingWindows, HideFloatingWindows,
AreFloatingWindowsVisible.
- Extensive error and parameter checking has been added
to all routines.
- New, advanced window positioning support routines
have been added including SetWindowBounds,
GetWindowBounds, MoveWindowStructure, ZoomWindowIdeal,
and IsWindowInStandardState.
- New window zooming routines have been added to fully
support the recommended zooming human interface
specifications.
- Support for association of tagged data with windows
(properties) has been added.
- GetWindowRegion now always returns the visible state
of the specified region even for invisible windows.
- Update events will no longer occur in foreground
applications windows when overlapping windows in
background applications become visible.
- A window's background can now be set to a specific
color or pattern without the use of a 'wctb'
resource.
- APIs for modifying a window's update region without
changing the current port have been added
(InvalWindowRgn/Rect, ValidWindowRgn/Rect).
- Support for window title popup menus has been
added.
- The new TransitionWindow API has been added for
attaching animation and sound to a window for different
on screen actions such as showing or hiding a
window.
- A problem where under some circumstances parts of the
desktop were not being redrawn correctly has been
corrected.
- Advanced document window support (window proxies) has
been added.
- Window titles are now drawn using condensed and
truncated text if the window's title is too large to be
displayed in the title bar.
- WARNING:
- Applications using Layer Manager APIs for
floating windows will not work with Mac OS
8.5.
|
- WARNING:
- Applications writing directly to the low
memory window list global, either by direct
access or by LMSetWindowList, may cause
problems in MacOS 8.5. It is strongly
recommended that developers interested in
future compatibility treat the window list as
read-only.
|
- WARNING:
- Applications writing directly to the
GrayRgn may cause problems in MacOS 8.5, and
may cease to work properly in future versions
of the Mac OS. Developers interested in
future compatibility should use the new
ShowMenuBar/HideMenuBar routines
instead.
|
Related Materials:
|